<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta content="Cask Data, Inc." name="author" />
<meta content="Copyright © 2015 Cask Data, Inc." name="copyright" />


    <meta name="git_release" content="6.1.1">
    <meta name="git_hash" content="05fbac36f9f7aadeb44f5728cea35136dbc243e5">
    <meta name="git_timestamp" content="2020-02-09 08:22:47 +0800">
    <title>Table Exploration</title>

    <link rel="stylesheet" href="../_static/cdap-bootstrap.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <link rel="stylesheet" href="../_static/bootstrap-3.3.6/css/bootstrap.min.css" type="text/css" />
    <link rel="stylesheet" href="../_static/bootstrap-3.3.6/css/bootstrap-theme.min.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/bootstrap-sphinx.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/cdap-dynamicscrollspy-4.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/jquery.mCustomScrollbar.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/cdap-jquery.mCustomScrollbar.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/abixTreeList-2.css" type="text/css" />
    <link rel="stylesheet" href="../_static/cdap-bootstrap.css" type="text/css" />

    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '',
        VERSION:     '6.1.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  false
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>

    <link rel="shortcut icon" href="../_static/favicon.ico"/>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="top" title="Cask Data Application Platform 6.1.1 Documentation" href="../index.html" />
    <link rel="up" title="Data Exploration" href="index.html" />
    <link rel="next" title="ObjectMappedTable Exploration" href="object-mapped-tables.html" />
    <link rel="prev" title="FileSet Exploration" href="filesets.html" />
    <!-- block extrahead -->
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
    <meta name="apple-mobile-web-app-capable" content="yes">
    <!-- block extrahead end -->

</head>
<body role="document">

<!-- block navbar -->
<div id="navbar" class="navbar navbar-inverse navbar-default navbar-fixed-top">
    <div class="container-fluid">
      <div class="row">
        <div class="navbar-header">
          <!-- .btn-navbar is used as the toggle for collapsed navbar content -->
          <a class="navbar-brand" href="../table-of-contents/../../index.html">
            <span><img alt="CDAP logo" src="../_static/cdap_logo.svg"/></span>
          </a>

          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>

          <div class="pull-right">
            <div class="dropdown version-dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown"
                role="button" aria-haspopup="true" aria-expanded="false">
                v 6.1.1 <span class="caret"></span>
              </a>
              <ul class="dropdown-menu">
                <li><a href="//docs.cdap.io/cdap/5.1.2/en/index.html">v 5.1.2</a></li>
                <li><a href="//docs.cdap.io/cdap/4.3.4/en/index.html">v 4.3.4</a></li>
              </ul>
            </div>
          </div>
          <form class="navbar-form navbar-right navbar-search" action="../search.html" method="get">
            <div class="form-group">
              <div class="navbar-search-image material-icons"></div>
              <input type="text" name="q" class="form-control" placeholder="  Search" />
            </div>
            <input type="hidden" name="check_keywords" value="yes" />
            <input type="hidden" name="area" value="default" />
          </form>

          <div class="collapse navbar-collapse nav-collapse navbar-right navbar-navigation">
            <ul class="nav navbar-nav"><li class="docsite-nav-tab-container"><a class="docsite-nav-tab-link " href="../table-of-contents/../../index.html">简介</a></li><li class="docsite-nav-tab-container"><a class="docsite-nav-tab-link current" href="../table-of-contents/../../guides.html">手册</a></li><li class="docsite-nav-tab-container"><a class="docsite-nav-tab-link " href="../table-of-contents/../../reference-manual/index.html">参考</a></li><li class="docsite-nav-tab-container"><a class="docsite-nav-tab-link " href="../table-of-contents/../../faqs/index.html">帮助</a></li>
            </ul>
          </div>

        </div>
      </div>
    </div>
  </div><!-- block navbar end -->
<!-- block main content -->
<div class="main-container container">
  <div class="row"><div class="col-md-2">
      <div id="sidebar" class="bs-sidenav scrollable-y-outside" role="complementary">
<!-- theme_manual: developer-manual -->
<!-- theme_manual_highlight: guides -->
<!-- sidebar_title_link: ../table-of-contents/../../guides.html -->

  <div role="note" aria-label="manuals links"><h3><a href="../table-of-contents/../../guides.html">Guides</a></h3>

    <ul class="this-page-menu">
      <li class="toctree-l1"><a href="../table-of-contents/../../user-guide/index.html" rel="nofollow">用户手册</a>
      </li>
      <li class="toctree-l1"><b><a href="../table-of-contents/../../developer-manual/index.html" rel="nofollow">开发手册</a></b>
      <nav class="pagenav">
      <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html"> 简介</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html"> 入门指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/sandbox/index.html">CDAP Sandbox</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../getting-started/sandbox/zip.html">二进制 Zip 文件</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getting-started/sandbox/zip.html#cdap-sandbox">启动和停止 CDAP Sandbox</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getting-started/sandbox/virtual-machine.html">虚拟机镜像</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getting-started/sandbox/docker.html">Docker 镜像</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/quick-start.html">快速入门</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/dev-env.html">搭建开发环境</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/start-stop-cdap.html">启动和停止 CDAP</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/building-apps.html">构建并运行应用</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../overview/index.html"> 概述</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../overview/anatomy.html"> 大数据应用剖析</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/modes.html"> 模式和组件</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/abstractions.html"> 核心概念</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/interfaces.html"> 编程接口</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../building-blocks/index.html"> 抽象概念</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/core.html"> Core Abstractions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/applications.html"> Applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/datasets/index.html"> Datasets</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../building-blocks/datasets/overview.html"> Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="../building-blocks/datasets/table.html"> Table API</a></li>
<li class="toctree-l3"><a class="reference internal" href="../building-blocks/datasets/fileset.html"> FileSets</a></li>
<li class="toctree-l3"><a class="reference internal" href="../building-blocks/datasets/partitioned-fileset.html"> Partitioned FileSets</a></li>
<li class="toctree-l3"><a class="reference internal" href="../building-blocks/datasets/time-partitioned-fileset.html"> TimePartitioned FileSets</a></li>
<li class="toctree-l3"><a class="reference internal" href="../building-blocks/datasets/system-custom.html"> System and Custom Datasets</a></li>
<li class="toctree-l3"><a class="reference internal" href="../building-blocks/datasets/permissions.html"> Dataset Permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../building-blocks/datasets/cube.html"> Cube Dataset</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/mapreduce-programs.html"> MapReduce Programs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/plugins.html"> Plugins</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/schedules.html"> Schedules</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/secure-keys.html"> Secure Keys</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/services.html"> Services</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/spark-programs.html"> Spark Programs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/workers.html"> Workers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/workflows.html"> Workflows</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/artifacts.html"> Artifacts</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/program-lifecycle.html"> Program Lifecycle</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/namespaces.html"> Namespaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/transaction-system.html"> Transaction System</a></li>
<li class="toctree-l2"><a class="reference internal" href="../building-blocks/transactional-messaging-system.html"> Transactional Messaging System</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../metadata/index.html"> 元数据</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../metadata/system-metadata.html"> System Metadata</a></li>
<li class="toctree-l2"><a class="reference internal" href="../metadata/discovery-lineage.html"> Discovery and Lineage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../metadata/field-lineage.html"> Field Level Lineage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../metadata/audit-logging.html"> Audit Logging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../metadata/metadata-ui.html"> CDAP Metadata UI</a></li>
<li class="toctree-l2"><a class="reference internal" href="../metadata/programmatic-metadata.html"> Accessing metadata programmatically</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../pipelines/index.html"> 数据流管道</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/concepts-design.html"> Concepts and Design</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/getting-started.html"> Getting Started</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/studio.html"> CDAP Studio</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/creating-pipelines.html"> Creating Pipelines</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/running-pipelines.html"> Running Pipelines</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/plugin-management.html"> Plugin Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/plugins/index.html"> Plugin Reference</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/plugins/actions/index.html"> Action Plugins</a><ul class="simple">
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/plugins/sources/index.html"> Source Plugins</a><ul class="simple">
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/plugins/transforms/index.html"> Transform Plugins</a><ul class="simple">
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/plugins/analytics/index.html"> Analytic Plugins</a><ul class="simple">
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/plugins/sinks/index.html"> Sink Plugins</a><ul class="simple">
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/plugins/shared-plugins/index.html"> Shared Plugins</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../pipelines/plugins/shared-plugins/core.html">CoreValidator</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/plugins/post-run-plugins/index.html"> Post-run Plugins</a><ul class="simple">
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/developing-pipelines.html"> Developing Pipelines</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/developing-plugins/index.html"> Developing Plugins</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/developing-plugins/plugin-basics.html">Plugin Basics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/developing-plugins/creating-a-plugin.html">Creating a Plugin</a></li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/developing-plugins/presentation-plugins.html">Plugin Presentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/developing-plugins/testing-plugins.html">Testing Plugins</a></li>
<li class="toctree-l3"><a class="reference internal" href="../pipelines/developing-plugins/packaging-plugins.html">Packaging Plugins</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../pipelines/how-cdap-pipelines-work.html"> How CDAP Pipelines Work</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../cloud-runtimes/index.html"> 云平台运行</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../cloud-runtimes/concepts/index.html"> Concepts</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cloud-runtimes/provisioners/index.html"> Provisioners</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../cloud-runtimes/provisioners/gcp-dataproc.html">Google Dataproc</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cloud-runtimes/provisioners/aws-emr.html">Amazon Elastic MapReduce</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cloud-runtimes/provisioners/remote-hadoop.html">Remote Hadoop</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../cloud-runtimes/profiles/index.html"> Profiles</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../cloud-runtimes/profiles/creating-profiles.html">Creating Profiles</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cloud-runtimes/profiles/assigning-profiles.html">Assigning Profiles</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cloud-runtimes/profiles/admin-controls.html">Admin Controls</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../cloud-runtimes/example/index.html"> Example</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../security/index.html"> 安全</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../security/client-authentication.html">Client Authentication</a></li>
<li class="toctree-l2"><a class="reference internal" href="../security/cdap-authentication-clients-java.html">CDAP Authentication Client for Java</a></li>
<li class="toctree-l2"><a class="reference internal" href="../security/cdap-authentication-clients-python.html">CDAP Authentication Client for Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="../security/custom-authentication.html">Custom Authentication</a></li>
<li class="toctree-l2"><a class="reference internal" href="../security/authorization-extensions.html">Authorization Extensions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../testing/index.html"> 测试和调试</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../testing/testing.html"> Testing a CDAP Application</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/debugging.html"> Debugging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/troubleshooting.html"> Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../ingesting-tools/index.html"> 数据融合</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../ingesting-tools/cdap-stream-clients-java.html">CDAP Stream Client for Java</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ingesting-tools/cdap-stream-clients-python.html">CDAP Stream Client for Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ingesting-tools/cdap-stream-clients-ruby.html">CDAP Stream Client for Ruby</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ingesting-tools/cdap-flume.html">CDAP Flume</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html"> 数据探索</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="filesets.html"> Fileset Exploration</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#"> Table Exploration</a></li>
<li class="toctree-l2"><a class="reference internal" href="object-mapped-tables.html"> ObjectMappedTable Exploration</a></li>
<li class="toctree-l2"><a class="reference internal" href="custom-datasets.html"> Custom Dataset Exploration</a></li>
<li class="toctree-l2"><a class="reference internal" href="hive-execution-engines.html"> Hive Execution Engines</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../advanced/index.html"> 高级主题</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../advanced/application-logback.html"> Application Logback</a></li>
<li class="toctree-l2"><a class="reference internal" href="../advanced/best-practices.html"> Best Practices</a></li>
<li class="toctree-l2"><a class="reference internal" href="../advanced/class-loading.html"> Class Loading</a></li>
<li class="toctree-l2"><a class="reference internal" href="../advanced/configuring-resources.html"> Configuring Program Resources</a></li>
<li class="toctree-l2"><a class="reference internal" href="../advanced/program-retry-policies.html"> Program Retry Policies</a></li>
</ul>
</li>
</ul>
</nav>
      </li>
      <li class="toctree-l1"><a href="../table-of-contents/../../admin-manual/index.html" rel="nofollow">管理手册</a>
      </li>
      <li class="toctree-l1"><a href="../table-of-contents/../../integrations/index.html" rel="nofollow">集成手册</a>
      </li>
      <li class="toctree-l1"><a href="../table-of-contents/../../examples-manual/index.html" rel="nofollow">最佳实践</a>
      </li>
    </ul>
  </div></div>
    </div><div class="col-md-8 content" id="main-content">
    
  <div class="section" id="table-exploration">
<span id="id1"></span><h1>Table Exploration<a class="headerlink" href="#table-exploration" title="Permalink to this headline">🔗</a></h1>
<p>A <code class="docutils literal notranslate"><span class="pre">Table</span></code> is a core dataset. Unlike relational database tables where every
row has the same schema, every row of a Table can have a different set of columns.
Though Tables do not require a schema, in practice they are often written with an
implicit schema. Column names are often strings, with a single data type used
for all values in the same column. If you are using a Table in this way,
you can set a schema as a Table property to enable exploration. The schema will be
applied at read time, allowing you to run ad-hoc queries against the Table.</p>
<div class="section" id="requirements">
<h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">🔗</a></h2>
<p>In order to explore a Table, your Table must meet a few requirements.</p>
<ul class="simple">
<li>Columns names must be strings.</li>
<li>All column values for a specific column must be of the same type. For example, a value cannot be a string
in one row and an integer in another.</li>
<li>Column values must be of a primitive type.
A primitive type is one of boolean, int, long, float, double, bytes, or string.</li>
<li>Column names must be valid Hive column names. This means they cannot be reserved keywords such as <em>drop</em>.
Please refer to the <a class="reference external" href="https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL">Hive language manual</a>
for more information about Hive.</li>
</ul>
</div>
<div class="section" id="creating-an-explorable-table">
<h2>Creating an Explorable Table<a class="headerlink" href="#creating-an-explorable-table" title="Permalink to this headline">🔗</a></h2>
<p>When creating a <code class="docutils literal notranslate"><span class="pre">Table</span></code> in your application, if you set the table’s schema property, your Table
will be enabled for exploration after it is created:</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="nd">@Override</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">configure</span><span class="p">()</span> <span class="p">{</span>
  <span class="n">Schema</span> <span class="n">profileSchema</span> <span class="o">=</span> <span class="n">Schema</span><span class="p">.</span><span class="na">recordOf</span><span class="p">(</span>
    <span class="s">&quot;profile&quot;</span><span class="p">,</span>
    <span class="c1">// id, name, and email are never null and are set when a user profile is created</span>
    <span class="n">Schema</span><span class="p">.</span><span class="na">Field</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">,</span> <span class="n">Schema</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">Type</span><span class="p">.</span><span class="na">STRING</span><span class="p">)),</span>
    <span class="n">Schema</span><span class="p">.</span><span class="na">Field</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">,</span> <span class="n">Schema</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">Type</span><span class="p">.</span><span class="na">STRING</span><span class="p">)),</span>
    <span class="n">Schema</span><span class="p">.</span><span class="na">Field</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="s">&quot;email&quot;</span><span class="p">,</span> <span class="n">Schema</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">Type</span><span class="p">.</span><span class="na">STRING</span><span class="p">)),</span>
    <span class="c1">// login and active are never set when a profile is created but are set later, so they are nullable.</span>
    <span class="n">Schema</span><span class="p">.</span><span class="na">Field</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="s">&quot;login&quot;</span><span class="p">,</span> <span class="n">Schema</span><span class="p">.</span><span class="na">nullableOf</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">Type</span><span class="p">.</span><span class="na">LONG</span><span class="p">))),</span>
    <span class="n">Schema</span><span class="p">.</span><span class="na">Field</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="s">&quot;active&quot;</span><span class="p">,</span> <span class="n">Schema</span><span class="p">.</span><span class="na">nullableOf</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">Type</span><span class="p">.</span><span class="na">LONG</span><span class="p">)))</span>
  <span class="p">);</span>
  <span class="n">createDataset</span><span class="p">(</span><span class="s">&quot;profiles&quot;</span><span class="p">,</span> <span class="n">Table</span><span class="p">.</span><span class="na">class</span><span class="p">.</span><span class="na">getName</span><span class="p">(),</span> <span class="n">DatasetProperties</span><span class="p">.</span><span class="na">builder</span><span class="p">()</span>
    <span class="c1">// set the schema property so that it can be explored via Hive</span>
    <span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">Table</span><span class="p">.</span><span class="na">PROPERTY_SCHEMA</span><span class="p">,</span> <span class="n">profileSchema</span><span class="p">.</span><span class="na">toString</span><span class="p">())</span>
    <span class="c1">// to indicate that the id field should come from the row key and not a row column</span>
    <span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">Table</span><span class="p">.</span><span class="na">PROPERTY_SCHEMA_ROW_FIELD</span><span class="p">,</span> <span class="s">&quot;id&quot;</span><span class="p">)</span>
    <span class="p">.</span><span class="na">build</span><span class="p">());</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Note that the schema row field property is set along with the schema property. The schema row field property
must be set if you want to explore your Table row along with Table columns. In the example above, this property
will let CDAP know to read the <code class="docutils literal notranslate"><span class="pre">id</span></code> field from the Table row instead of from the Table columns.</p>
</div>
<div class="section" id="setting-a-schema-on-an-existing-table">
<h2>Setting a Schema on an Existing Table<a class="headerlink" href="#setting-a-schema-on-an-existing-table" title="Permalink to this headline">🔗</a></h2>
<p>Since schema is applied at read time, it is possible to set a schema on a Table after it has been created.
It is also possible to change the schema of a Table. Dataset properties can be set using the RESTful API.
For example, the same schema set through the example code above can also be set through the RESTful API
(reformatted to fit):</p>

<script type="text/javascript">

  $(function tabbedparsedliteral29() {
    var tabs = ['linux', 'windows'];
    var mapping = {'windows': 'windows', 'linux': 'linux'};
    var tabSetID = 'linux-windows';
    for (var i = 0; i < tabs.length; i++) {
      var tab = tabs[i];
      $("#tabbedparsedliteral29 .example-tab-" + tab).click(changeExampleTab(tab, mapping, "tabbedparsedliteral29", tabSetID));
    }
  });

</script>
<div id="tabbedparsedliteral29" class="tabbed-parsed-literal dependent-linux-windows">
<ul class="tabbed-parsed-literal nav-tabs">
<li class="example-tab example-tab-linux active"><a href="#">Linux</a></li>
<li class="example-tab example-tab-windows "><a href="#">Windows</a></li>
</ul>

<div class="tab-contents">

<div class="tab-pane tab-pane-linux active">
<div class="code code-tab">
<div class="highlight-console">
<!-- tabbed-parsed-literal start -->
<div class="highlight"><pre><span></span><span class="gp">$</span> curl -w<span class="s2">&quot;\n&quot;</span> -X PUT <span class="s2">&quot;http://example.com:11015/v3/namespaces/&lt;namespace-id&gt;/data/datasets/profiles/properties&quot;</span> <span class="se">\</span>
  -d <span class="s1">&#39;{ &quot;schema&quot;: &quot;{ \</span>
<span class="s1">          \&quot;type\&quot;:\&quot;record\&quot;, \</span>
<span class="s1">          \&quot;name\&quot;:\&quot;purchase\&quot;, \</span>
<span class="s1">          \&quot;fields\&quot;:[ \</span>
<span class="s1">            {\&quot;name\&quot;:\&quot;id\&quot;,\&quot;type\&quot;:\&quot;string\&quot;}, \</span>
<span class="s1">            {\&quot;name\&quot;:\&quot;name\&quot;,\&quot;type\&quot;:\&quot;string\&quot;}, \</span>
<span class="s1">            {\&quot;name\&quot;:\&quot;email\&quot;,\&quot;type\&quot;:\&quot;string\&quot;}, \</span>
<span class="s1">            {\&quot;name\&quot;:\&quot;login\&quot;,\&quot;type\&quot;:[\&quot;long\&quot;, \&quot;null\&quot;]}, \</span>
<span class="s1">            {\&quot;name\&quot;:\&quot;active\&quot;,\&quot;type\&quot;:[\&quot;long\&quot;, \&quot;null\&quot;]} \</span>
<span class="s1">          ] \</span>
<span class="s1">        }&quot;, \</span>
<span class="s1">        &quot;schema.row.field&quot;: &quot;id&quot; \</span>
<span class="s1">      }&#39;</span></span>
</pre></div>
<!-- tabbed-parsed-literal end --></div>
</div>
</div>
<div class="tab-pane tab-pane-windows ">
<div class="code code-tab">
<div class="highlight-shell-session">
<!-- tabbed-parsed-literal start -->
<div class="highlight"><pre><span></span><span class="gp">&gt;</span> curl -X PUT <span class="s2">&quot;http://example.com:11015/v3/namespaces/&lt;namespace-id&gt;/data/datasets/profiles/properties&quot;</span> ^
<span class="go">  -d &quot;{ \&quot;schema\&quot;: \&quot;{ ^</span>
<span class="go">          \\&quot;type\\&quot;:\\&quot;record\\&quot;, ^</span>
<span class="go">          \\&quot;name\\&quot;:\\&quot;purchase\\&quot;, ^</span>
<span class="go">          \\&quot;fields\\&quot;:[ ^</span>
<span class="go">            {\\&quot;name\\&quot;:\\&quot;id\\&quot;,\\&quot;type\\&quot;:\\&quot;string\\&quot;}, ^</span>
<span class="go">            {\\&quot;name\\&quot;:\\&quot;name\\&quot;,\\&quot;type\\&quot;:\\&quot;string\\&quot;}, ^</span>
<span class="go">            {\\&quot;name\\&quot;:\\&quot;email\\&quot;,\\&quot;type\\&quot;:\\&quot;string\\&quot;}, ^</span>
<span class="go">            {\\&quot;name\\&quot;:\\&quot;login\\&quot;,\\&quot;type\\&quot;:[\\&quot;long\\&quot;, \\&quot;null\\&quot;]}, ^</span>
<span class="go">            {\\&quot;name\\&quot;:\\&quot;active\\&quot;,\\&quot;type\\&quot;:[\\&quot;long\\&quot;, \\&quot;null\\&quot;]} ^</span>
<span class="go">          ] ^</span>
<span class="go">        }\&quot;, ^</span>
<span class="go">        \&quot;schema.row.field\&quot;: \&quot;id\&quot; ^</span>
<span class="go">      }&quot;</span></span>
</pre></div>
<!-- tabbed-parsed-literal end --></div>
</div>
</div>
</div>
</div>
<p>CDAP schemas are adopted from the <a class="reference external" href="http://avro.apache.org/docs/1.7.3/spec.html#schemas">Avro Schema Declaration</a>.
Note that since dataset properties must be strings, the schema JSON has to be escaped
properly. Note also that the properties given in this request replace all existing
properties; that is, if you had set other properties for this table, such as time-to-live
(<code class="docutils literal notranslate"><span class="pre">dataset.table.ttl</span></code>), you must also include those properties in the update request.</p>
</div>
<div class="section" id="formulating-queries">
<h2>Formulating Queries<a class="headerlink" href="#formulating-queries" title="Permalink to this headline">🔗</a></h2>
<p>When creating your queries, keep these limitations in mind:</p>
<ul class="simple">
<li>The query syntax of CDAP is a subset of the variant of SQL that was first defined by Apache Hive.</li>
<li>The SQL commands <code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> and <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> are not allowed on CDAP datasets.</li>
<li>When addressing your datasets in queries, you need to prefix the Table name with <code class="docutils literal notranslate"><span class="pre">dataset_</span></code>.
For example, if your Table is named <code class="docutils literal notranslate"><span class="pre">Purchases</span></code>, then the corresponding Hive table
name is <code class="docutils literal notranslate"><span class="pre">dataset_purchases</span></code>. Note that the table name is lower-case.</li>
<li>If your Table name contains a ‘.’ or a ‘-‘, those characters will be converted to ‘_’ for the Hive
table name. For example, if your Table is named <code class="docutils literal notranslate"><span class="pre">my-table.name</span></code>, the corresponding Hive table
name will be <code class="docutils literal notranslate"><span class="pre">dataset_my_table_name</span></code>. Beware of name collisions. For example,
<code class="docutils literal notranslate"><span class="pre">my.table</span></code> will use the same Hive table name as <code class="docutils literal notranslate"><span class="pre">my_table</span></code>. Beware of name collisions.
For example, <code class="docutils literal notranslate"><span class="pre">my.table</span></code> will use the same Hive table name as <code class="docutils literal notranslate"><span class="pre">my_table</span></code>.</li>
<li>You can also configure the table name by setting the dataset property <code class="docutils literal notranslate"><span class="pre">explore.table.name</span></code>
(see <a class="reference internal" href="index.html#data-exploration"><span class="std std-ref">Data Exploration</span></a>).</li>
</ul>
<p>For more examples of queries, please refer to the <a class="reference external" href="https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML">Hive language manual</a>.</p>
</div>
</div>

</div>
    <div class="col-md-2">
      <div id="right-sidebar" class="bs-sidenav scrollable-y" role="complementary">
        <div id="localtoc-scrollspy">
        </div>
      </div>
    </div></div>
</div>
<!-- block main content end -->
<!-- block footer -->
<footer class="footer">
      <div class="container">
        <div class="row">
          <div class="col-md-2 footer-left"><a title="FileSet Exploration" href="filesets.html" />Previous</a></div>
          <div class="col-md-8 footer-center"><a class="footer-tab-link" href="../table-of-contents/../../reference-manual/licenses/index.html">Copyright</a> &copy; 2014-2020 Cask Data, Inc.&bull; <a class="footer-tab-link" href="//docs.cask.co/cdap/6.1.1/cdap-docs-6.1.1-web.zip" rel="nofollow">Download</a> an archive or
<a class="footer-tab-link" href="//docs.cask.co/cdap">switch the version</a> of the documentation
          </div>
          <div class="col-md-2 footer-right"><a title="ObjectMappedTable Exploration" href="object-mapped-tables.html" />Next</a></div>
        </div>
      </div>
    </footer>
<!-- block footer end -->
<script type="text/javascript" src="../_static/bootstrap-3.3.6/js/bootstrap.min.js"></script><script type="text/javascript" src="../_static/js/bootstrap-sphinx.js"></script><script type="text/javascript" src="../_static/js/abixTreeList-2.js"></script><script type="text/javascript" src="../_static/js/cdap-dynamicscrollspy-4.js"></script><script type="text/javascript" src="../_static/js/cdap-version-menu.js"></script><script type="text/javascript" src="../_static/js/copy-to-clipboard.js"></script><script type="text/javascript" src="../_static/js/jquery.mousewheel.min.js"></script><script type="text/javascript" src="../_static/js/jquery.mCustomScrollbar.js"></script><script type="text/javascript" src="../_static/js/js.cookie.js"></script><script type="text/javascript" src="../_static/js/tabbed-parsed-literal-0.2.js"></script><script type="text/javascript" src="../_static/js/cdap-onload-javascript.js"></script><script type="text/javascript" src="../_static/js/cdap-version-menu.js"></script>
    <script src="https://cdap.gitee.io/docs/cdap/json-versions.js"/></script>
  </body>
</html>